package com.zuo_book.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zuo_book.entity.SysProjectStage;

import java.util.List;

/**
 * 项目阶段服务接口
 */
public interface SysProjectStageService {
    
    /**
     * 创建项目阶段
     * @param stage 阶段信息
     * @return 阶段ID
     */
    Long createStage(SysProjectStage stage);
    
    /**
     * 更新项目阶段
     * @param stage 阶段信息
     */
    void updateStage(SysProjectStage stage);
    
    /**
     * 删除项目阶段
     * @param stageId 阶段ID
     */
    void deleteStage(Long stageId);
    
    /**
     * 获取项目阶段详情
     * @param stageId 阶段ID
     * @return 阶段详情
     */
    SysProjectStage getStageById(Long stageId);
    
    /**
     * 获取项目所有阶段
     * @param projectId 项目ID
     * @return 阶段列表
     */
    List<SysProjectStage> getProjectStages(Long projectId);
    
    /**
     * 分页查询项目阶段
     * @param projectId 项目ID
     * @param page 页码
     * @param size 每页大小
     * @return 阶段列表
     */
    Page<SysProjectStage> listProjectStages(Long projectId, int page, int size);
    
    /**
     * 更新阶段完成率
     * @param stageId 阶段ID
     * @param completionRate 完成率
     */
    void updateStageCompletionRate(Long stageId, Integer completionRate);
    
    /**
     * 根据模板阶段创建项目阶段
     * @param projectId 项目ID
     * @param templateId 模板ID
     * @return 创建的阶段数量
     */
    int createStagesFromTemplate(Long projectId, Long templateId);
}